#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>

//open， read, write, lseek， close等函数的使用。同时理解文件描述符
//2.要求:
//2.1 使用代码打开当前路径下的“bite”文件（如果文件不存在在创建文件），向文件当中写入“i like linux!”.
//2.2 在从文件当中读出文件当中的内容， 打印到标准输出当中； 关闭文件描述符i

int main()
{
  int fd=open("bite",O_WRONLY | O_CREAT | O_TRUNC,0666);
  if(fd<0) return 1;

  const char* msg="i like linux";
  write(fd,msg,strlen(msg));
  close(fd);

  fd=open("bite",O_RDONLY);
  if(fd<0) return 2;
  struct stat st;
  int n=stat("bite",&st);
  if(n!=0) return 3;
  char* buf=(char*)malloc(st.st_size+1);
  read(fd,buf,st.st_size);
  buf[st.st_size]='\0';
  fprintf(stdout,"%s\n",buf);
  close(fd);

  return 0;
}




//int main()
//{
//  FILE* fp=fopen("bite","w");
//  const char* msg="linux so easy";
//  fwrite(msg,1,strlen(msg),fp);
//  fclose(fp);
//
//  fp=fopen("bite","r");
//  struct stat st;
//  int n=stat("bite",&st);
//  if(n!=0) return 1;
//  int len=st.st_size;
//  char* buf=(char*)malloc(len+1);
//  fread(buf,1,len,fp);
//  buf[len]='\0';
//  fprintf(stdout,"%s\n",buf);
//  fclose(fp);  
//
//  return 0;
//}
//
